package com.jay.loadbalancer;


import com.jay.model.ServiceMetaInfo;

import java.util.List;
import java.util.Map;

/**
 * 负载均衡器（消费端使用）
 * 该接口定义了负载均衡器的行为，用于在客户端选择一个服务进行调用
 * 主要作用是在多个服务实例中按照一定策略选择一个最优的服务实例
 */
public interface LoadBalancer {

    /**
     * 选择服务调用
     *
     * @param requestParams       请求参数，包含客户端请求的相关信息，用于负载均衡策略的决策
     * @param serviceMetaInfoList 可用服务列表，包含当前可用的服务实例的元信息
     * @return 返回选中的服务实例的元信息，用于后续的服务调用
     */
    ServiceMetaInfo select(Map<String, Object> requestParams, List<ServiceMetaInfo> serviceMetaInfoList);
}

